Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Displaying Raw • Download


vendor/rns_filesync/tests/smoke/test_version_api.py v4.8.1 (f6cc7b83) Text, 4.16 KB

T8b949e"""Version and MeshChatX-facing API readiness checks."""

Tff7b72from T7ee787__future__ Tff7b72import Te6edf3annotations

Tff7b72import T7ee787importlibT7ee787.T7ee787metadata
Tff7b72from T7ee787pathlib Tff7b72import Te6edf3Path

Tff7b72import T7ee787pytest

Te6edf3pytestmark Tff7b72= Tb4b4b4[Te6edf3pytestTff7b72.Td2a8ffmarkTff7b72.Td2a8ffsmokeTb4b4b4, Te6edf3pytestTff7b72.Td2a8ffmarkTff7b72.Td2a8ffunitTb4b4b4]


Tff7b72def Td2a8fftest_version_is_1_0_0Tb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72import T7ee787rns_filesync

Tff7b72assert Te6edf3rns_filesyncTff7b72.Td2a8ff__version__ Tff7b72== Ta5d6ff"Ta5d6ff1.0.0Ta5d6ff"


Tff7b72def Td2a8fftest_pyproject_version_matches_packageTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72import T7ee787rns_filesync

Te6edf3root Tff7b72= Te6edf3PathTb4b4b4(Tff7b72__file__Tb4b4b4)Tff7b72.Td2a8ffresolveTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffparentsTb4b4b4[T79c0ff2Tb4b4b4]
Te6edf3text Tff7b72= Tb4b4b4(Te6edf3root Tff7b72/ Ta5d6ff"Ta5d6ffpyproject.tomlTa5d6ff"Tb4b4b4)Tff7b72.Td2a8ffread_textTb4b4b4(Te6edf3encodingTff7b72=Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)
Tff7b72assert Ta5d6ff'Ta5d6ffversion = Ta5d6ff"Ta5d6ff1.0.0Ta5d6ff"Ta5d6ff' Tff7b72in Te6edf3text
Tff7b72assert Te6edf3rns_filesyncTff7b72.Td2a8ff__version__ Tff7b72== Ta5d6ff"Ta5d6ff1.0.0Ta5d6ff"


Tff7b72def Td2a8fftest_distribution_metadata_when_installedTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72tryTb4b4b4:
Te6edf3meta Tff7b72= Te6edf3importlibTff7b72.Td2a8ffmetadataTff7b72.Td2a8ffversionTb4b4b4(Ta5d6ff"Ta5d6ffrns-filesyncTa5d6ff"Tb4b4b4)
Tff7b72except Te6edf3importlibTff7b72.Td2a8ffmetadataTff7b72.Td2a8ffPackageNotFoundErrorTb4b4b4:
Te6edf3pytestTff7b72.Td2a8ffskipTb4b4b4(Ta5d6ff"Ta5d6ffeditable/distribution metadata unavailableTa5d6ff"Tb4b4b4)
Tff7b72assert Te6edf3meta Tff7b72== Ta5d6ff"Ta5d6ff1.0.0Ta5d6ff"


Tff7b72def Td2a8fftest_public_api_surface_for_meshchatxTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72from T7ee787rns_filesync Tff7b72import Te6edf3FileSyncService
Tff7b72from T7ee787rns_filesyncT7ee787.T7ee787permissions Tff7b72import Te6edf3PermissionStore

Te6edf3required Tff7b72= Tb4b4b4[
Ta5d6ff"Ta5d6ffstartTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffstopTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffget_statusTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflist_peersTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflist_filesTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffconnect_peerTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdisconnect_peerTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffbrowse_peerTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdownload_fileTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffannounce_nowTa5d6ff"Tb4b4b4,
Tb4b4b4]
Tff7b72for Te6edf3name Tff7b72in Te6edf3requiredTb4b4b4:
Tff7b72assert Tffa657callableTb4b4b4(Tffa657getattrTb4b4b4(Te6edf3FileSyncServiceTb4b4b4, Te6edf3nameTb4b4b4, Tff7b72NoneTb4b4b4)Tb4b4b4)Tb4b4b4, Te6edf3name

T8b949e# Callback attributes exist on instances constructed without reticulum.
Tff7b72from T7ee787types Tff7b72import Te6edf3SimpleNamespace

Te6edf3svc Tff7b72= Te6edf3FileSyncServiceTb4b4b4(
Te6edf3identityTff7b72=Te6edf3SimpleNamespaceTb4b4b4(Tffa657hashTff7b72=Ta5d6ffbTa5d6ff"Tffea00\xaaTa5d6ff" Tff7b72* T79c0ff16Tb4b4b4)Tb4b4b4,
Te6edf3sync_directoryTff7b72=Ta5d6ff"Ta5d6ff/tmpTa5d6ff"Tb4b4b4,
Te6edf3permissionsTff7b72=Te6edf3PermissionStoreTb4b4b4(Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Tff7b72for Te6edf3attr Tff7b72in Tb4b4b4(
Ta5d6ff"Ta5d6ffon_peer_connectedTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffon_peer_disconnectedTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffon_sync_progressTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffon_file_updatedTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffon_file_deletedTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffon_errorTa5d6ff"Tb4b4b4,
Tb4b4b4)Tb4b4b4:
Tff7b72assert Tffa657hasattrTb4b4b4(Te6edf3svcTb4b4b4, Te6edf3attrTb4b4b4)


Tff7b72def Td2a8fftest_service_does_not_construct_reticulum_when_instance_providedTb4b4b4(Te6edf3tmp_pathTb4b4b4)Tb4b4b4:
T8b949e"""Embed contract: host-owned stack is reused."""
Tff7b72from T7ee787types Tff7b72import Te6edf3SimpleNamespace
Tff7b72from T7ee787unittestT7ee787.T7ee787mock Tff7b72import Te6edf3MagicMock

Tff7b72import T7ee787RNS

Tff7b72from T7ee787rns_filesyncT7ee787.T7ee787service Tff7b72import Te6edf3FileSyncService

Te6edf3fake Tff7b72= Te6edf3MagicMockTb4b4b4(Te6edf3nameTff7b72=Ta5d6ff"Ta5d6ffHostReticulumTa5d6ff"Tb4b4b4)
Te6edf3existing Tff7b72= Te6edf3RNSTff7b72.Td2a8ffReticulumTff7b72.Td2a8ffget_instanceTb4b4b4(Tb4b4b4)
Tff7b72if Te6edf3existing Tff7b72is Tff7b72not Tff7b72NoneTb4b4b4:
Te6edf3pytestTff7b72.Td2a8ffskipTb4b4b4(Ta5d6ff"Ta5d6ffreticulum already running in this processTa5d6ff"Tb4b4b4)

Te6edf3svc Tff7b72= Te6edf3FileSyncServiceTb4b4b4(
Te6edf3identityTff7b72=Te6edf3SimpleNamespaceTb4b4b4(Tffa657hashTff7b72=Ta5d6ffbTa5d6ff"Tffea00\xbbTa5d6ff" Tff7b72* T79c0ff16Tb4b4b4)Tb4b4b4,
Te6edf3sync_directoryTff7b72=Tffa657strTb4b4b4(Te6edf3tmp_pathTb4b4b4)Tb4b4b4,
Te6edf3reticulumTff7b72=Te6edf3fakeTb4b4b4,
Tb4b4b4)
Tff7b72assert Te6edf3svcTff7b72.Td2a8ff_ensure_reticulumTb4b4b4(Tb4b4b4) Tff7b72is Te6edf3fake
Tff7b72assert Te6edf3svcTff7b72.Td2a8ff_own_reticulum Tff7b72is Tff7b72False


Tff7b72def Td2a8fftest_cli_module_importableTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72from T7ee787rns_filesync Tff7b72import Te6edf3cli

Tff7b72assert Tffa657callableTb4b4b4(Te6edf3cliTff7b72.Td2a8ffmainTb4b4b4)
Tff7b72assert Tffa657callableTb4b4b4(Te6edf3cliTff7b72.Td2a8ffbuild_parserTb4b4b4)
Te6edf3parser Tff7b72= Te6edf3cliTff7b72.Td2a8ffbuild_parserTb4b4b4(Tb4b4b4)
Te6edf3help_text Tff7b72= Te6edf3parserTff7b72.Td2a8ffformat_helpTb4b4b4(Tb4b4b4)
Tff7b72assert Ta5d6ff"Ta5d6ff--rnsconfigTa5d6ff" Tff7b72in Te6edf3help_text
Tff7b72assert Ta5d6ff"Ta5d6ff--configTa5d6ff" Tff7b72in Te6edf3help_text
Tff7b72assert Ta5d6ff"Ta5d6ff--versionTa5d6ff" Tff7b72in Te6edf3help_text
Tff7b72assert Ta5d6ff"Ta5d6ff--verboseTa5d6ff" Tff7b72in Te6edf3help_text


Tff7b72def Td2a8fftest_cli_version_flagsTb4b4b4(Te6edf3capsysTb4b4b4)Tb4b4b4:
Tff7b72from T7ee787rns_filesync Tff7b72import Te6edf3cli
Tff7b72from T7ee787rns_filesyncT7ee787.T7ee787_meta Tff7b72import Te6edf3__version__

Tff7b72with Te6edf3pytestTff7b72.Td2a8ffraisesTb4b4b4(Tf85149SystemExitTb4b4b4) Tff7b72as Te6edf3exitedTb4b4b4:
Te6edf3cliTff7b72.Td2a8ffbuild_parserTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffparse_argsTb4b4b4(Tb4b4b4[Ta5d6ff"Ta5d6ff-vTa5d6ff"Tb4b4b4]Tb4b4b4)
Tff7b72assert Te6edf3exitedTff7b72.Td2a8ffvalueTff7b72.Td2a8ffcode Tff7b72== T79c0ff0
Te6edf3out Tff7b72= Te6edf3capsysTff7b72.Td2a8ffreadouterrTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffout
Tff7b72assert Te6edf3__version__ Tff7b72in Te6edf3out
Tff7b72assert Ta5d6ff"Ta5d6ffrns-filesyncTa5d6ff" Tff7b72in Te6edf3out

Tff7b72with Te6edf3pytestTff7b72.Td2a8ffraisesTb4b4b4(Tf85149SystemExitTb4b4b4) Tff7b72as Te6edf3exitedTb4b4b4:
Te6edf3cliTff7b72.Td2a8ffbuild_parserTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffparse_argsTb4b4b4(Tb4b4b4[Ta5d6ff"Ta5d6ff--versionTa5d6ff"Tb4b4b4]Tb4b4b4)
Tff7b72assert Te6edf3exitedTff7b72.Td2a8ffvalueTff7b72.Td2a8ffcode Tff7b72== T79c0ff0
Tff7b72assert Te6edf3__version__ Tff7b72in Te6edf3capsysTff7b72.Td2a8ffreadouterrTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffout


Tff7b72def Td2a8fftest_version_string_includes_baked_fields_when_setTb4b4b4(Te6edf3monkeypatchTb4b4b4)Tb4b4b4:
Tff7b72import T7ee787rns_filesyncT7ee787.T7ee787_meta Tff7b72as T7ee787meta

Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(Te6edf3metaTb4b4b4, Ta5d6ff"Ta5d6ff__version__Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff1.0.0Ta5d6ff"Tb4b4b4)
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(Te6edf3metaTb4b4b4, Ta5d6ff"Ta5d6ffBUILD_DATETa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff2026-07-19T12:00:00ZTa5d6ff"Tb4b4b4)
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(Te6edf3metaTb4b4b4, Ta5d6ff"Ta5d6ffGIT_COMMITTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffdeadbeefTa5d6ff"Tb4b4b4)
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(Te6edf3metaTb4b4b4, Ta5d6ff"Ta5d6ffGIT_DIRTYTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff0Ta5d6ff"Tb4b4b4)
Te6edf3text Tff7b72= Te6edf3metaTff7b72.Td2a8ffversion_stringTb4b4b4(Tb4b4b4)
Tff7b72assert Te6edf3text Tff7b72== Ta5d6ff"Ta5d6ffrns-filesync 1.0.0 | built 2026-07-19T12:00:00Z | commit deadbeefTa5d6ff"


Tff7b72def Td2a8fftest_man_page_existsTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3root Tff7b72= Te6edf3PathTb4b4b4(Tff7b72__file__Tb4b4b4)Tff7b72.Td2a8ffresolveTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffparentsTb4b4b4[T79c0ff2Tb4b4b4]
Te6edf3man Tff7b72= Te6edf3root Tff7b72/ Ta5d6ff"Ta5d6ffmanTa5d6ff" Tff7b72/ Ta5d6ff"Ta5d6ffman1Ta5d6ff" Tff7b72/ Ta5d6ff"Ta5d6ffrns-filesync.1Ta5d6ff"
Tff7b72assert Te6edf3manTff7b72.Td2a8ffis_fileTb4b4b4(Tb4b4b4)
Te6edf3text Tff7b72= Te6edf3manTff7b72.Td2a8ffread_textTb4b4b4(Te6edf3encodingTff7b72=Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)
Tff7b72assert Ta5d6ff"Ta5d6ff.TH RNS-FILESYNCTa5d6ff" Tff7b72in Te6edf3text
Tff7b72assert Ta5d6ff"Ta5d6ff--versionTa5d6ff" Tff7b72in Te6edf3text Tff7b72or Ta5d6ff"Tffea00\\Ta5d6ff-Tffea00\\Ta5d6ff-versionTa5d6ff" Tff7b72in Te6edf3text


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────